home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / Libraries / Aidan's Class Libraries / Source / File Classes / TFiles.cpp
Encoding:
Text File  |  1997-04-27  |  2.3 KB  |  133 lines  |  [TEXT/CWIE]

  1. //Copyright (c) 1997 Aidan Cully
  2. //All rights reserved
  3.  
  4. #include <Script.h>
  5. #include <Errors.h>
  6. #include "CLFiles.h"
  7.  
  8. TResFile *TResFile::presRes = 0l;
  9.  
  10. #pragma mark ---TBaseFile---
  11.  
  12. TBaseFile::TBaseFile() {
  13.     hasFile = false;
  14. }
  15.  
  16. Boolean TBaseFile::HasFile() {
  17.     return( hasFile );
  18. }
  19.  
  20. OSErr TBaseFile::SetFile( FSSpec newFile ) {
  21.     theFile = newFile;
  22.     return( noErr );
  23. }
  24.  
  25. OSErr TBaseFile::CreateNew( OSType creator, OSType fileType, ScriptCode theScript ) {
  26.     return( FSpCreate( &theFile, creator, fileType, theScript ) );
  27. }
  28.  
  29. #pragma mark ---TDataFile---
  30.  
  31. TDataFile::TDataFile() {
  32.     isOpenDF = false;
  33. }
  34.  
  35. OSErr TDataFile::OpenDF( SInt8 perms ) {
  36.     OSErr theErr;
  37.  
  38.     theErr = FSpOpenDF( &theFile, perms, &fRef );
  39.     if( theErr == noErr )
  40.         isOpenDF = true;
  41.     return( theErr );
  42. }
  43.  
  44. OSErr TDataFile::CloseDF() {
  45.     OSErr theErr;
  46.     
  47.     if( isOpenDF ) {
  48.         theErr = FSClose( fRef );
  49.         if( theErr == noErr )
  50.             isOpenDF = false;
  51.     } else
  52.         theErr = fnOpnErr;
  53.     return( theErr );
  54. }
  55.  
  56. OSErr TDataFile::SetFPos( short posMode, SInt32 posOff ) {
  57.     if( !isOpenDF )
  58.         return( fnOpnErr );
  59.     else
  60.         return( ::SetFPos( fRef, posMode, posOff ) );
  61. }
  62.  
  63. OSErr TDataFile::GetFPos( SInt32 &where ) {
  64.     if( !isOpenDF )
  65.         return( fnOpnErr );
  66.     return( ::GetFPos( fRef, &where ) );
  67. }
  68.  
  69. OSErr TDataFile::WriteDF( void *buf, SInt32 bufLen ) {
  70.     if( !isOpenDF )
  71.         return( fnOpnErr );
  72.     else
  73.         return( FSWrite( fRef, &bufLen, buf ) );
  74. }
  75.  
  76. OSErr TDataFile::ReadDF( void *buf, SInt32 bufLen ) {
  77.     if( !isOpenDF )
  78.         return( fnOpnErr );
  79.     else
  80.         return( FSRead( fRef, &bufLen, buf ) );
  81. }
  82.  
  83. OSErr TDataFile::SetFile( FSSpec newFile ) {
  84.     OSErr theErr = noErr;
  85.  
  86.     if( isOpenDF )
  87.         theErr = CloseDF();
  88.     theFile = newFile;
  89.     return noErr;
  90. }
  91.  
  92. short TDataFile::GetDFRef() {
  93.     if( isOpenDF )
  94.         return( fRef );
  95.     else
  96.         return( 0l );
  97. }
  98.  
  99. Boolean TDataFile::IsOpenDF() {
  100.     return( isOpenDF );
  101. }
  102.  
  103. #pragma mark ---TResFile---
  104.  
  105. TResFile::TResFile() {
  106.     isOpenRF = false;
  107. }
  108.  
  109. OSErr TResFile::OpenRF( SInt8 perms ) {
  110.     OSErr theErr;
  111.  
  112.     if( !hasFile )
  113.         return( fnfErr );
  114.     if( isOpenRF )
  115.         return( fnOpnErr );
  116.     theErr = FSpOpenRF( &theFile, perms, &rRef );
  117.     if( theErr == noErr )
  118.         isOpenRF = true;
  119.     return( theErr );
  120. }
  121.  
  122. OSErr TResFile::CloseRF() {
  123.     OSErr theErr;
  124.  
  125.     if( !isOpenRF )
  126.         return( fnOpnErr );
  127.     if( !hasFile )
  128.         return( fnfErr );
  129.     theErr = FSClose( rRef );
  130.     if( theErr == noErr )
  131.         isOpenRF = false;
  132.     return( theErr );
  133. }